home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / ibus / setup / enginetreeview.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-11-11  |  8KB  |  219 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import gtk
  5. import glib
  6. import gobject
  7. import pango
  8. import ibus
  9. from icon import load_icon
  10. from gettext import dgettext
  11.  
  12. _ = lambda a: dgettext('ibus', a)
  13.  
  14. N_ = lambda a: a
  15.  
  16. class EngineTreeView(gtk.TreeView):
  17.     __gsignals__ = {
  18.         'changed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()) }
  19.     
  20.     def __init__(self, engines):
  21.         super(EngineTreeView, self).__init__()
  22.         self._EngineTreeView__engines = set([])
  23.         self._EngineTreeView__changed = False
  24.         self.set_reorderable(True)
  25.         self._EngineTreeView__model = gtk.ListStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING)
  26.         self.set_model(self._EngineTreeView__model)
  27.         self._EngineTreeView__model.connect('row-changed', self._EngineTreeView__emit_changed_delay_cb, 'row-changed')
  28.         self._EngineTreeView__model.connect('row-deleted', self._EngineTreeView__emit_changed_delay_cb, 'row-deleted')
  29.         self._EngineTreeView__model.connect('row-inserted', self._EngineTreeView__emit_changed_delay_cb, 'row-inserted')
  30.         self._EngineTreeView__model.connect('rows-reordered', self._EngineTreeView__emit_changed_delay_cb, 'rows-reordered')
  31.         column = gtk.TreeViewColumn(_('Input Method'))
  32.         column.set_min_width(220)
  33.         renderer = gtk.CellRendererPixbuf()
  34.         renderer.set_property('xalign', 0)
  35.         column.pack_start(renderer, False)
  36.         column.set_cell_data_func(renderer, self._EngineTreeView__icon_cell_data_cb)
  37.         renderer = gtk.CellRendererText()
  38.         renderer.set_property('xalign', 0)
  39.         renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
  40.         column.pack_start(renderer, True)
  41.         column.set_cell_data_func(renderer, self._EngineTreeView__name_cell_data_cb)
  42.         self.append_column(column)
  43.         renderer = gtk.CellRendererCombo()
  44.         model = gtk.ListStore(gobject.TYPE_STRING)
  45.         model.append(('us',))
  46.         model.append(('jp',))
  47.         model.append(('xkb',))
  48.         renderer.set_property('xalign', 0)
  49.         renderer.set_property('model', model)
  50.         renderer.set_property('text-column', 0)
  51.         renderer.set_property('has-entry', False)
  52.         renderer.set_property('editable', True)
  53.         renderer.connect('changed', self._EngineTreeView__engine_layout_changed_cb)
  54.         column = gtk.TreeViewColumn(_('Kbd'))
  55.         column.set_expand(False)
  56.         column.set_fixed_width(32)
  57.         column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
  58.         column.pack_start(renderer, False)
  59.         column.set_cell_data_func(renderer, self._EngineTreeView__layout_cell_data_cb)
  60.         self.set_engines(engines)
  61.  
  62.     
  63.     def __emit_changed(self, *args):
  64.         if self._EngineTreeView__changed:
  65.             self._EngineTreeView__changed = False
  66.             self.emit('changed')
  67.         
  68.  
  69.     
  70.     def __emit_changed_delay_cb(self, *args):
  71.         if not self._EngineTreeView__changed:
  72.             self._EngineTreeView__changed = True
  73.             glib.idle_add(self._EngineTreeView__emit_changed)
  74.         
  75.  
  76.     
  77.     def __icon_cell_data_cb(self, celllayout, renderer, model, iter):
  78.         engine = self._EngineTreeView__model.get_value(iter, 0)
  79.         icon_size = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0]
  80.         pixbuf = load_icon(engine.icon, gtk.ICON_SIZE_LARGE_TOOLBAR)
  81.         if pixbuf == None:
  82.             pixbuf = load_icon('engine-default', gtk.ICON_SIZE_LARGE_TOOLBAR)
  83.         
  84.         if pixbuf == None:
  85.             pixbuf = load_icon('gtk-missing-image', gtk.ICON_SIZE_LARGE_TOOLBAR)
  86.         
  87.         renderer.set_property('pixbuf', pixbuf)
  88.  
  89.     
  90.     def __name_cell_data_cb(self, celllayout, renderer, model, iter):
  91.         engine = self._EngineTreeView__model.get_value(iter, 0)
  92.         renderer.set_property('sensitive', True)
  93.         language = ibus.get_language_name(engine.language)
  94.         renderer.set_property('text', '%s - %s' % (language, engine.longname))
  95.         if self._EngineTreeView__model.get_path(iter)[0] == 0:
  96.             renderer.set_property('weight', pango.WEIGHT_BOLD)
  97.         else:
  98.             renderer.set_property('weight', pango.WEIGHT_NORMAL)
  99.  
  100.     
  101.     def __layout_cell_data_cb(self, celllayout, renderer, model, iter):
  102.         engine = self._EngineTreeView__model.get_value(iter, 0)
  103.         layout = self._EngineTreeView__model.get_value(iter, 1)
  104.         renderer.set_property('sensitive', True)
  105.         if not layout:
  106.             layout = engine.layout
  107.         
  108.         renderer.set_property('text', layout)
  109.         if self._EngineTreeView__model.get_path(iter)[0] == 0:
  110.             renderer.set_property('weight', pango.WEIGHT_BOLD)
  111.         else:
  112.             renderer.set_property('weight', pango.WEIGHT_NORMAL)
  113.  
  114.     
  115.     def __engine_layout_changed_cb(self, combo, path, iter):
  116.         return None
  117.         i = self._EngineTreeView__model.get_iter(path)
  118.         layout = combo.get_property('model').get_value(iter, 0)
  119.         self._EngineTreeView__model.set_value(i, 1, layout)
  120.  
  121.     
  122.     def set_engines(self, engines):
  123.         self._EngineTreeView__model.clear()
  124.         self._EngineTreeView__engines = set([])
  125.         for e in engines:
  126.             if e in self._EngineTreeView__engines:
  127.                 continue
  128.             
  129.             iter = self._EngineTreeView__model.append(None)
  130.             self._EngineTreeView__model.set(iter, 0, e)
  131.             self._EngineTreeView__engines.add(e)
  132.         
  133.         self._EngineTreeView__emit_changed()
  134.  
  135.     
  136.     def get_selected_iter(self):
  137.         selection = self.get_selection()
  138.         if selection:
  139.             return selection.get_selected()[1]
  140.  
  141.     
  142.     def get_engines(self):
  143.         engines = _[1]
  144.         return engines
  145.  
  146.     
  147.     def get_select_engine(self):
  148.         iter = self.get_selected_iter()
  149.         if iter == None:
  150.             return None
  151.         row = self._EngineTreeView__model.get(iter, 0)
  152.         return row[0]
  153.  
  154.     
  155.     def prepend_engine(self, engine):
  156.         if engine == None or engine in self._EngineTreeView__engines:
  157.             return None
  158.         iter = self._EngineTreeView__model.prepend(None)
  159.         self._EngineTreeView__model.set(iter, 0, engine)
  160.         self._EngineTreeView__engines.add(engine)
  161.         self.scroll_to_cell(self._EngineTreeView__model[0].path, None)
  162.  
  163.     
  164.     def append_engine(self, engine):
  165.         if engine == None or engine in self._EngineTreeView__engines:
  166.             return None
  167.         iter = self._EngineTreeView__model.append(None)
  168.         self._EngineTreeView__model.set(iter, 0, engine)
  169.         self._EngineTreeView__engines.add(engine)
  170.         self.scroll_to_cell(self._EngineTreeView__model[-1].path, None)
  171.  
  172.     
  173.     def remove_engine(self):
  174.         iter = self.get_selected_iter()
  175.         if iter == None:
  176.             return None
  177.         row = self._EngineTreeView__model[iter]
  178.         engine = row[0]
  179.         self._EngineTreeView__engines.remove(engine)
  180.         index = row.path[0]
  181.         self._EngineTreeView__model.remove(iter)
  182.         
  183.         try:
  184.             row = self._EngineTreeView__model[index]
  185.             selection = self.get_selection()
  186.             selection.select_path(row.path)
  187.         except:
  188.             iter == None
  189.  
  190.  
  191.     
  192.     def move_up_engine(self):
  193.         iter = self.get_selected_iter()
  194.         if iter == None:
  195.             return None
  196.         row = self._EngineTreeView__model[iter]
  197.         index = row.path[0]
  198.         if index == 0:
  199.             return None
  200.         self._EngineTreeView__model.swap(iter, self._EngineTreeView__model[index - 1].iter)
  201.         self.scroll_to_cell(row.path, None)
  202.  
  203.     
  204.     def move_down_engine(self):
  205.         iter = self.get_selected_iter()
  206.         if iter == None:
  207.             return None
  208.         row = self._EngineTreeView__model[iter]
  209.         index = row.path[0]
  210.         last_row = self._EngineTreeView__model[-1]
  211.         last_index = last_row.path[0]
  212.         if index == last_index:
  213.             return None
  214.         self._EngineTreeView__model.swap(iter, self._EngineTreeView__model[index + 1].iter)
  215.         self.scroll_to_cell(row.path, None)
  216.  
  217.  
  218. gobject.type_register(EngineTreeView)
  219.